package com.pe.pgn.clubpgn.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.pe.pgn.clubpgn.domain.ClpbClientePersona;
import com.pe.pgn.clubpgn.domain.ClpbTipoDocumentoPersona;
import com.pe.pgn.clubpgn.domain.ClpmUbigeo;
import com.pe.pgn.clubpgn.domain.beans.BNAfiliacion;
import com.pe.pgn.clubpgn.domain.beans.BNProgramaDetalle;

@SuppressWarnings("unchecked")
public interface AfiliacionDao extends GenericDao<ClpbClientePersona, Long>{

	public List findEmpresasCelulares(boolean itemDefault);

	public List findEstadosCiviles();

	public List findTiposDocumentoPersona();

	public List findUbigeos();

	public List<BNProgramaDetalle> getListarProgramas();

	public Long getNumeroCaracteresByIdTipoDoc(Long idTipoDoc);
	
	public BNAfiliacion findClientePersonaPorCoDocumento(String coDocument,
			String codeTipoDoc);
	
	public HashMap getCoTarjetaPersonaInactivaByIDClientePersona(Long id);

	public String isValidCodTarjetaPersona(String codigoTarjeta,
			Long coEstacion, Long coClientePersona, 
			boolean isValidateStatus, String deTarjetaAsig);
	
	public boolean isValidCodNumeroDocClientePersona(
			String coCodeNumeroDocumento, Long idClientePersona);
	
	public String isValidCoPrograma(String coPrograma,
			List<BNProgramaDetalle> listProgram);
	
	public HashMap getCoTarjetaPersonaByIDClientePersona(Long id);
	
	public void updateActivoTarjetaPersona(String coTarjetaAsig);
	
	public void updateInactivoTarjetaPersona(String coTarjetaAsig, boolean setearFechaAnulacion);
	
	public ClpbClientePersona setValuesOfBNAfiliacion(BNAfiliacion afiliacion);
	
	public void saveOrUpdateClientePersona(ClpbClientePersona bean);
	
	public void insertFirstTarjetaPersona(ClpbClientePersona bean);
	
	public void insertClientePrograma(ClpbClientePersona bean, String coPrograma);
	
	public void deleteProgramasByCoCliente(ClpbClientePersona bean);

	public List findDepartamentosUbigeo(boolean isItemDefault);

	public List findDistritoUbigeo(String coDepartamento,String coProvincia, boolean isItemDefault);

	public List findPronvinciaUbigeo(String coDepartamento, boolean isItemDefault);

	public ClpmUbigeo getUbigeo(String coDepartamento, String coProvincia,
			String coDistrito);

	public ClpbTipoDocumentoPersona getTipoDocumentoPersonaByID(
			String coTipoDocumentoPersona);

	public void updateClientePrograma(ClpbClientePersona bean,
			BNProgramaDetalle bnDetalle);

	public int getNumCardsByUser(Long idCliente);
		public int verificarSiYaEsClientePorDocumento(String coNumeroDocumento);
	
	public Map<String, Object> obtenerEmpresaAfiliadora();

	public List<BNProgramaDetalle> getListarProgramasxDefecto();
}
